/*
 * extractorObjetFixe.h
 *
 *  Created on: 7 avr. 2010
 *      Author: Administrateur
 */

#ifndef EXTRACTOROBJETFIXE_H_
#define EXTRACTOROBJETFIXE_H_

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include "graph.h"

/*! \brief Classe blobLabel \n
  *	Structure blob
  *	@author Alain Simac-Lejeune
  */

typedef struct blobLabel{
	int label;
	int size;
};

/*! \brief Classe extractorObjectFixe \n
  *	Elle permet l'extraction d'objet en mouvement
  *	dans les plans disposant de camera fixe. Elle travaille
  *	par extraction de fond.
  *	@author Alain Simac-Lejeune
  */

class extractorObjetFixe
{

public:

	extractorObjetFixe();
	//~extractorObjetFixe();
	void initialize();
	void processing();
	IplImage* getMeanImage();
	IplImage* getShadowWeightImage();
	IplImage* getFinalWeightImage();
	IplImage* getFinalCutResultImage();

private:

IplImage *fr, *frame, *frame1, *temp, *mean_image,
		*test1_image, *test2_image, *test3_image, *test4_image;

IplImage* extraction(IplImage* background,IplImage* foreground);

inline static void allocateOnDemand( IplImage **img, CvSize size, int depth, int channels);

char* generateFileName(int imageNum, char* ext, char* fileName, int digit, char *fileAbsoluteName, char *dir);

int findLaregeBlob(unsigned char *I, int ih, int iw);


};
#endif /* EXTRACTOROBJETFIXE_H_ */
